/**
 * 本地存储工具类
 * 封装UniApp的storage API
 */
export const storage = {
  /**
   * 获取存储值
   * @param {string} key 键名
   * @param {any} defaultValue 默认值
   * @returns {any} 存储值或默认值
   */
  get(key, defaultValue = null) {
    try {
      const value = uni.getStorageSync(key)
      return value !== '' ? value : defaultValue
    } catch (e) {
      console.error('获取存储失败:', e)
      return defaultValue
    }
  },
  
  /**
   * 设置存储值
   * @param {string} key 键名
   * @param {any} value 值
   * @returns {boolean} 是否成功
   */
  set(key, value) {
    try {
      uni.setStorageSync(key, value)
      return true
    } catch (e) {
      console.error('设置存储失败:', e)
      return false
    }
  },
  
  /**
   * 移除存储值
   * @param {string} key 键名
   * @returns {boolean} 是否成功
   */
  remove(key) {
    try {
      uni.removeStorageSync(key)
      return true
    } catch (e) {
      console.error('移除存储失败:', e)
      return false
    }
  },
  
  /**
   * 清空所有存储
   * @returns {boolean} 是否成功
   */
  clear() {
    try {
      uni.clearStorageSync()
      return true
    } catch (e) {
      console.error('清空存储失败:', e)
      return false
    }
  },
  
  /**
   * 获取所有存储键名
   * @returns {string[]} 键名数组
   */
  getAllKeys() {
    try {
      return uni.getStorageInfoSync().keys
    } catch (e) {
      console.error('获取存储键名失败:', e)
      return []
    }
  }
}

// 简化导出
export const getStorage = storage.get
export const setStorage = storage.set
export const removeStorage = storage.remove
export const clearStorage = storage.clear
export const getAllStorageKeys = storage.getAllKeys

export default storage